package cn.fl.capital.transform;

import java.util.ArrayList;
import java.util.List;

import cn.fl.capital.dto.CapAdvRuleInfoDTO;
import cn.fl.capital.vo.CapAdvRuleInfoVO;
import cn.cmm.base.framework.utils.CollectionUtils;

 /**
 * @Description: 垫款业务规则表 转换器
 * VO是客户端传递数据到服务端进行转换的数据 
 * VO转换数据变成DTO传递到服务端 
 * VO不能在服务端出现
 */
public class CapAdvRuleInfoVOTransform {


	/**
	 * DTO 转  VO
	 * @param dto CapAdvRuleInfoDTO
	 * @return CapAdvRuleInfoVO
	 */
	public static CapAdvRuleInfoVO toVO(CapAdvRuleInfoDTO dto) {
		CapAdvRuleInfoVO  vo = null;
		if (dto != null) { 
			vo = new CapAdvRuleInfoVO();
			vo.setId(dto.getId());
			vo.setRuleNm(dto.getRuleNm());//垫款规则名称
			vo.setAdvRate(dto.getAdvRate());//垫款利率
			vo.setRuleStsCd(dto.getRuleStsCd());//规则状态  1.开启 0.关闭
			vo.setDtTypCd(dto.getDtTypCd());//垫款日期类型 CAP0033  1.工作日 2.自然日(暂时不考虑)
			vo.setAdvCycCd(dto.getAdvCycCd());//垫款周期CAP0034： 1-5 周一-周五
			vo.setAdvTmCd(dto.getAdvTmCd());//垫款时间 CAP0029
			vo.setAdvMinAmt(dto.getAdvMinAmt());//垫款租金最小值
			vo.setAdvMaxAmt(dto.getAdvMaxAmt());//垫款租金最大值
			vo.setMinOvdDay(dto.getMinOvdDay());//逾期起始天数
			vo.setMaxOvdDay(dto.getMaxOvdDay());//逾期截止天数
			vo.setAdvPd(dto.getAdvPd());//垫款期数
			vo.setIsAllAdv(dto.getIsAllAdv());//是否全垫
			vo.setAdvBaseCd(dto.getAdvBaseCd());//垫款基数（CAP0035）1.租金
			vo.setAdvTypCd(dto.getAdvTypCd());//垫款方式（垫款颗粒度）CAP0032  1.支付表 2.承租人3.汇总
			vo.setIsValid(dto.getIsValid());//是否有效
			vo.setIsDel(dto.getIsDel());//是否删除（1：是，0：否）
			vo.setAdvOvdDayCd(dto.getAdvOvdDayCd());//垫款逾期天数（作废） CAP0030
			vo.setAdvBkId(dto.getAdvBkId());//垫款账户ID（作废）
			vo.setAdvOvdPdCd(dto.getAdvOvdPdCd());//垫款逾期期数（作废） CAP0031

			vo.setCrtTm(dto.getCrtTm());//创建时间
			vo.setCrtUsrId(dto.getCrtUsrId());//创建人
			vo.setMdfTm(dto.getMdfTm());//修改时间
			vo.setMdfUsrId(dto.getMdfUsrId());//修改人
			vo.setRuleTypCd(dto.getRuleTypCd());//垫款规则

			vo.setAdvBaseCdNm(dto.getAdvBaseCdNm());
			vo.setAdvTypCdNm(dto.getAdvTypCdNm());
			vo.setAdvCycCdNm(dto.getAdvCycCdNm());
			vo.setAdvTmCdNm(dto.getAdvTmCdNm());
			vo.setDtTypCdNm(dto.getDtTypCdNm());

			vo.setAdvMinAmtStr(dto.getAdvMinAmtStr());
			vo.setAdvMaxAmtStr(dto.getAdvMaxAmtStr());
		}
		return vo;
	}

	/**
	 * VO 转 DTO
	 * @param vo CapAdvRuleInfoVO
	 * @return CapAdvRuleInfoDTO
	 */
	public static CapAdvRuleInfoDTO toDTO(CapAdvRuleInfoVO vo) {
		CapAdvRuleInfoDTO dto = null;
		if (vo != null) {
			dto = new CapAdvRuleInfoDTO();
			dto.setId(vo.getId());
			dto.setRuleNm(vo.getRuleNm());//垫款规则名称
			dto.setAdvRate(vo.getAdvRate());//垫款利率
			dto.setRuleStsCd(vo.getRuleStsCd());//规则状态  1.开启 0.关闭
			dto.setDtTypCd(vo.getDtTypCd());//垫款日期类型 CAP0033  1.工作日 2.自然日(暂时不考虑)
			dto.setAdvCycCd(vo.getAdvCycCd());//垫款周期CAP0034： 1-5 周一-周五
			dto.setAdvTmCd(vo.getAdvTmCd());//垫款时间 CAP0029
			dto.setAdvMinAmt(vo.getAdvMinAmt());//垫款租金最小值
			dto.setAdvMaxAmt(vo.getAdvMaxAmt());//垫款租金最大值
			dto.setMinOvdDay(vo.getMinOvdDay());//逾期起始天数
			dto.setMaxOvdDay(vo.getMaxOvdDay());//逾期截止天数
			dto.setAdvPd(vo.getAdvPd());//垫款期数
			dto.setIsAllAdv(vo.getIsAllAdv());//是否全垫
			dto.setAdvBaseCd(vo.getAdvBaseCd());//垫款基数（CAP0035）1.租金
			dto.setAdvTypCd(vo.getAdvTypCd());//垫款方式（垫款颗粒度）CAP0032  1.支付表 2.承租人3.汇总
			dto.setIsValid(vo.getIsValid());//是否有效
			dto.setIsDel(vo.getIsDel());//是否删除（1：是，0：否）
			dto.setAdvOvdDayCd(vo.getAdvOvdDayCd());//垫款逾期天数（作废） CAP0030
			dto.setAdvBkId(vo.getAdvBkId());//垫款账户ID（作废）
			dto.setAdvOvdPdCd(vo.getAdvOvdPdCd());//垫款逾期期数（作废） CAP0031

			dto.setCrtTm(vo.getCrtTm());//创建时间
			dto.setCrtUsrId(vo.getCrtUsrId());//创建人
			dto.setMdfTm(vo.getMdfTm());//修改时间
			dto.setMdfUsrId(vo.getMdfUsrId());//修改人
			dto.setRuleTypCd(vo.getRuleTypCd());//垫款规则

			dto.setAdvBaseCdNm(vo.getAdvBaseCdNm());
			dto.setAdvTypCdNm(vo.getAdvTypCdNm());
			dto.setAdvCycCdNm(vo.getAdvCycCdNm());
			dto.setAdvTmCdNm(vo.getAdvTmCdNm());
			dto.setDtTypCdNm(vo.getDtTypCdNm());

			dto.setAdvMinAmtStr(vo.getAdvMinAmtStr());
			dto.setAdvMaxAmtStr(vo.getAdvMaxAmtStr());
		}
		return dto;
	}
	
	/**
	 * DTO集合 转 VO集合
	 * @param list List<CapAdvRuleInfo>
	 * @return List<CapAdvRuleInfoDTO>
	 */
	public static List<CapAdvRuleInfoVO> toVOList(List<CapAdvRuleInfoDTO> list) {
		List<CapAdvRuleInfoVO>  voList = new ArrayList<CapAdvRuleInfoVO>();
		if(CollectionUtils.isNotEmpty(list)){
			for (CapAdvRuleInfoDTO dto : list) {
				voList.add(toVO(dto));
			}
		}
		return voList;
	}
	
	/**
	 *  VO集合 转 DTO集合
	 * @param list List<CapAdvRuleInfoVO>
	 * @return List<CapAdvRuleInfoDTO>
	 */
	public static List<CapAdvRuleInfoDTO> toDTOList(List<CapAdvRuleInfoVO> list) {
		List<CapAdvRuleInfoDTO>  dtoList = new ArrayList<>();
		if(CollectionUtils.isNotEmpty(list)){
			for (CapAdvRuleInfoVO vo : list) {
				dtoList.add(toDTO(vo));
			}
		}
		return dtoList;
	}
}
